/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.saber.certificacao.beansjsf.cadastro;

import br.com.saber.certificacao.beansjsf.semescopo.FluxoExibicaoMaster;
import br.com.saber.certificacao.utils.UtilMetodos;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author gbvbahia
 */
@ManagedBean(name = "fluxoExibicaoCadastro")
@ViewScoped
public class FluxoExibicao extends FluxoExibicaoMaster {

    private boolean exibirCadastroCertificacao;
    private boolean exibirCadastroVersao;
    private boolean exibirCadastroQuestao;
    private boolean exibirCadastroQuestaoEdicao;
    private boolean exibirCadastroQuestaoBloqueio;
    private boolean exibirCadastroQuestaoVersao;
    private boolean exibirCadastroObjetivo;

    private enum PaginaFluxo {

        CADASTRO_CERTIFICACAO, CADASTRO_VERSAO, CADASTRO_QUESTAO, CADASTRO_QUESTAO_EDICAO, CADASTRO_QUESTAO_BLOQUEIO,
        CADASTRO_QUESTAO_VERSAO, CADASTRO_OBJETIVO;
    }

    /** Creates a new instance of fluxoExibicao */
    public FluxoExibicao() {
    }

    @PostConstruct
    @Override
    public void init() {
        metodoExibirCadastroQuestao();
        Logger.getLogger(FluxoExibicao.class.getName()).log(Level.FINEST, "FluxoExibicao Cadastro:(init()) chamado...");
    }

    @PreDestroy
    @Override
    public void end() {
        Logger.getLogger(FluxoExibicao.class.getName()).log(Level.FINEST, "FluxoExibicao Cadastro: (end()) chamado...");
    }

    public void metodoExibirCadastroCertificacao() {
        alterarTela(PaginaFluxo.CADASTRO_CERTIFICACAO);
    }

    public void metodoExibirCadastroVersao() {
        alterarTela(PaginaFluxo.CADASTRO_VERSAO);
    }

    public void metodoExibirCadastroQuestao() {
        alterarTela(PaginaFluxo.CADASTRO_QUESTAO);
    }

    public void metodoExibirCadastroQuestaoEdicao() {
        alterarTela(PaginaFluxo.CADASTRO_QUESTAO_EDICAO);
    }

    public void metodoExibirCadastroQuestaoBloqueio() {
        alterarTela(PaginaFluxo.CADASTRO_QUESTAO_BLOQUEIO);
    }

    public void metodoExibirCadastroQuestaoVersao() {
        alterarTela(PaginaFluxo.CADASTRO_QUESTAO_VERSAO);
    }

    public void metodoExibirCadastroObjetivo() {
        alterarTela(PaginaFluxo.CADASTRO_OBJETIVO);
    }

    private void alterarTela(PaginaFluxo paginaLogin) {
        exibirCadastroCertificacao = (PaginaFluxo.CADASTRO_CERTIFICACAO.equals(paginaLogin));
        exibirCadastroVersao = (PaginaFluxo.CADASTRO_VERSAO.equals(paginaLogin));
        exibirCadastroQuestao = (PaginaFluxo.CADASTRO_QUESTAO.equals(paginaLogin));
        exibirCadastroQuestaoEdicao = (PaginaFluxo.CADASTRO_QUESTAO_EDICAO.equals(paginaLogin));
        exibirCadastroQuestaoBloqueio = (PaginaFluxo.CADASTRO_QUESTAO_BLOQUEIO.equals(paginaLogin));
        exibirCadastroQuestaoVersao = (PaginaFluxo.CADASTRO_QUESTAO_VERSAO.equals(paginaLogin));
        exibirCadastroObjetivo = (PaginaFluxo.CADASTRO_OBJETIVO.equals(paginaLogin));
        definirAtributos(paginaLogin);
    }

    private void definirAtributos(PaginaFluxo paginaLogin) {
        FacesContext fc = FacesContext.getCurrentInstance();
        switch (paginaLogin) {
            case CADASTRO_CERTIFICACAO:
                this.tituloRichPanel = UtilMetodos.getResourceBundle("richpanelCadastroCertificacao", fc);
                this.imgURLNormal = "certificacao_48_mais.png";
                break;
            case CADASTRO_VERSAO:
                this.tituloRichPanel = UtilMetodos.getResourceBundle("richpanelCadastroVersao", fc);
                this.imgURLNormal = "versao_48_add.png";
                break;
            case CADASTRO_QUESTAO:
                this.tituloRichPanel = UtilMetodos.getResourceBundle("richpanelCadastroQuestao", fc);
                this.imgURLNormal = "questao_48_add.png";
                break;
            case CADASTRO_QUESTAO_EDICAO:
                this.tituloRichPanel = UtilMetodos.getResourceBundle("richpanelCadastroQuestaoEditar", fc);
                this.imgURLNormal = "questao_48_edit.png";
                break;
            case CADASTRO_QUESTAO_BLOQUEIO:
                this.tituloRichPanel = UtilMetodos.getResourceBundle("richpanelCadastroQuestaoBloqueio", fc);
                this.imgURLNormal = "questao_48_block.png";
                break;
            case CADASTRO_QUESTAO_VERSAO:
                this.tituloRichPanel = UtilMetodos.getResourceBundle("richpanelCadastroQuestaoVersao", fc);
                this.imgURLNormal = "questao_48_versao.png";
                break;
            case CADASTRO_OBJETIVO:
                this.tituloRichPanel = UtilMetodos.getResourceBundle("richpanelCadastroObjetivoCertificacao", fc);
                this.imgURLNormal = "objetivo_48.png";
                break;
            default:
                throw new AssertionError("Não foi definido case para a enum: " + paginaLogin.toString());
        }
    }

    //=========================
    //Getters AND Setters
    //=========================
    public boolean isExibirCadastroCertificacao() {
        return exibirCadastroCertificacao;
    }

    public void setExibirCadastroCertificacao(boolean exibirCadastroCertificacao) {
        this.exibirCadastroCertificacao = exibirCadastroCertificacao;
    }

    public boolean isExibirCadastroQuestao() {
        return exibirCadastroQuestao;
    }

    public void setExibirCadastroQuestao(boolean exibirCadastroQuestao) {
        this.exibirCadastroQuestao = exibirCadastroQuestao;
    }

    public boolean isExibirCadastroQuestaoBloqueio() {
        return exibirCadastroQuestaoBloqueio;
    }

    public void setExibirCadastroQuestaoBloqueio(boolean exibirCadastroQuestaoBloqueio) {
        this.exibirCadastroQuestaoBloqueio = exibirCadastroQuestaoBloqueio;
    }

    public boolean isExibirCadastroQuestaoEdicao() {
        return exibirCadastroQuestaoEdicao;
    }

    public void setExibirCadastroQuestaoEdicao(boolean exibirCadastroQuestaoEdicao) {
        this.exibirCadastroQuestaoEdicao = exibirCadastroQuestaoEdicao;
    }

    public boolean isExibirCadastroQuestaoVersao() {
        return exibirCadastroQuestaoVersao;
    }

    public void setExibirCadastroQuestaoVersao(boolean exibirCadastroQuestaoVersao) {
        this.exibirCadastroQuestaoVersao = exibirCadastroQuestaoVersao;
    }

    public boolean isExibirCadastroVersao() {
        return exibirCadastroVersao;
    }

    public void setExibirCadastroVersao(boolean exibirCadastroVersao) {
        this.exibirCadastroVersao = exibirCadastroVersao;
    }

    public boolean isExibirCadastroObjetivo() {
        return exibirCadastroObjetivo;
    }

    public void setExibirCadastroObjetivo(boolean exibirCadastroObjetivo) {
        this.exibirCadastroObjetivo = exibirCadastroObjetivo;
    }
}
